import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// 自动导图图标组件
import Icons from "unplugin-icons/vite"
import IconsResolver from "unplugin-icons/resolver"

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ['vue', "@vueuse/core", "pinia", "vue-router",],
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({}),
      ],
      eslintrc: {
        // 自动生成 eslint 规则
        enabled: true,
        // 指定自动导入函数 eslint 规则的文件
        filepath: './.eslintrc-auto-import.json',
        globalsPropValue: true
      },
      // 是否在 vue 模板中自动导入
      vueTemplate: true,
      dts: "src/typings/auto-imports.d.ts",
    }),
    Components({
      resolvers: [
        // 自动导入图标组件
        IconsResolver({
          enabledCollections: ["ep"],
        }),
        ElementPlusResolver()
      ],
      // 指定自定义组件位置(默认:src/components)
      dirs: ["src/components", "src/**/components"],
      dts: "src/typings/components.d.ts"
    }),
    Icons({
      // 自动安装图标库
      autoInstall: true,
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})
